/*
 Problem Description
读入两个不超过25位的火星正整数A和B，计算A+B。需要注意的是：在火星上，整数不是单一进制的，第n位的进制就是第n个素数。例如：地球上的10进制数2，在火星上记为“1,0”，因为火星个位数是2进制的；地球上的10进制数38，在火星上记为“1,1,1,0”，因为火星个位数是2进制的，十位数是3进制的，百位数是5进制的，千位数是7进制的……
Input
测试输入包含若干测试用例，每个测试用例占一行，包含两个火星正整数A和B，火星整数的相邻两位数用逗号分隔，A和B之间有一个空格间隔。当A或B为0时输入结束，相应的结果不要输出。
Output
对每个测试用例输出1行，即火星表示法的A+B的值。
Sample Input
1,0 2,1
4,2,0 1,2,0
1 10,6,4,2,1
0 0
Sample Output
1,0,1
1,1,1,0
1,0,0,0,0,0
 */
package com.yuan.algorithms.practice201505;

import java.util.Scanner;

public class 火星A加B {

	public static void main(String[] args) {
		int[] arr = new int[30];// 素数表
		for (int i = 2, k = 0; i < 114; i++) {
			boolean result = true;
			for (int j = 2; j < i; j++) {
				if (i % j == 0) {
					result = false;
					break;
				}
			}
			if (result) {
				arr[k++] = i;
			}
		}
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String a = sc.next();
			String b = sc.next();
			if (a.equals("0") && b.equals("0")) {
				break;
			}
			String[] Sa = a.split(",");
			String[] Sb = b.split(",");
			int[] Ia = new int[Sa.length + Sb.length];
			int[] Ib = new int[Sa.length + Sb.length];
			for (int i = Ia.length - 1, j = Sa.length - 1; j >= 0; i--, j--) {
				Ia[i] = Integer.parseInt(Sa[j]);
			}
			for (int i = Ib.length - 1, j = Sb.length - 1; j >= 0; i--, j--) {
				Ib[i] = Integer.parseInt(Sb[j]);
			}

			int[] sum = new int[Sa.length + Sb.length];
			for (int i = sum.length - 1, k = 0; i >= 0; i--, k++) {
				sum[i] += Ia[i] + Ib[i];
				int temp1 = Ia[i] + Ib[i];
				if (sum[i] >= arr[k]) {
					sum[i - 1] += sum[i] / arr[k];
					sum[i] = sum[i] % arr[k];
				}
				int temp2 = sum[i];
			}
			for (int i = 0, j = 0; i < sum.length; i++) {
				if (sum[i] != 0 || j != 0) {
					if (j == 0) {
						System.out.print(sum[i]);
					} else {
						System.out.print("," + sum[i]);
					}
					j = 1;
				}
			}
			System.out.println();
		}
	}

}
